<?php

/*
    realizzazione del customtype pagamento

    questo va incluso nel file plugin che utilizza il post type
 */

// fissa gli hook
function wpf_pagamento_hooks()
{
	// creo il plugin ed i relativi menu
	register_activation_hook(__FILE__, 'wpf_pagamento_rewrite_flush'); // serve per i permalink
	add_action('init', 'wpf_pagamento_init'); // quando inizializzo la pagina
	add_action('init', 'wpf_pagamento_add_boxes'); 
        
	// -------------------------
	// 	add_action('contextual_help', 'wpf_pagamento_help_text', 10, 3); // genero l'help contestuale ai post, in amministrazione

	// modifico la visualizzazione dei custom-post
	// 	add_filter('the_content', 'wpf_pagamento_view'); // quando visualizzo il testo
	// 	add_filter('the_title','wpf_progetto_title'); // quando visualizzo il titolo

	// genero la tabella per la visualizzazione dei fascicoli :
	// 	add_filter('manage_wpf_progetto_posts_columns', 'wpf_progetto_list_column_header'); // aggiunge la colonna "azienda" alla lista dei fascicoli
	// 	add_filter('manage_edit-wpf_progetto_sortable_columns', 'wpf_progetto_list_sort_columns'); // rende ordinabile per una colonna
	// 	add_action('manage_wpf_progetto_posts_custom_column', 'wpf_progetto_list_column_row', 10, 2); // riempie la colonna azienda alla lista dei fascicoli
	// 	add_filter('views_edit-wpf_progetto', 'wpf_progetto_link_list'); // per aggiungere link nella lista dei progetti

	// 	add_action('the_post', 'wpf_progetto_extends'); // aggiunge al progetto i suoi customfields
	// 	add_filter('wpf_progetto_available_statuses', 'wpf_filter_status');
	// -------------------------

	// salvo i dati dei vari box creati
	add_action('save_post', 'wpf_pagamento_generale_save', 10, 2);
}

// inizializza quello che serve
function wpf_pagamento_init()
{
	// creazione del posttype
	//@ATTENTION modificare le varie descrizioni
	$labels = array(
		'name' => _x('Pagamenti', 'Pagamenti'),
		'singular_name' => _x('Pagamento', 'Nome singolare dei pagamenti'),
		'add_new' => _x('Aggiungi nuovo', 'wp-formazione'),
		'add_new_item' => __('Nuovo pagamento'),
		'edit_item' => __('Modifica pagamento'),
		'new_item' => __('Nuovo pagamento'),
		'all_items' => __('Tutti i pagamenti'),
		'view_item' => __('Visualizza questo pagamento'),
		'search_items' => __('Cerca un pagamento'),
		'not_found' => __('Nessun pagamento trovato'),
		'not_found_in_trash' => __('Non ci sono pagamenti nel cestino'),
		'parent_item_colon' => '',
		'menu_name' => 'Pagamenti'
	);

	$args = array(
		'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'show_in_menu' => 'edit.php?post_type=wpf_fattura_ricevuta',
		'query_var' => true,
		'rewrite' => array(
			'slug' => 'pagamento'
		),
		'capability_type' => array(
			'pagamento', 'pagamenti'
		),
		'map_meta_cap' => true,
		'has_archive' => true,
		'hierarchical' => true,
		'menu_position' => null,
		'supports' => array(
			'title'
		)
	);

	register_post_type('wpf_pagamento', $args);
}


// aggiunge alla pagamento i suoi customtype
function wpf_pagamento_extends($post) {
	// solo in caso di pagamento
	if ($post->post_type != 'wpf_pagamento')
	{
		return;
	}

	$post->utente = get_post_meta($post->ID, 'utente',true);
	$post->data_pagamento = get_post_meta($post->ID, 'data_pagamento', true);
	$post->modalita = get_post_meta($post->ID, 'modalita', true);
	$post->key = get_post_meta($post->ID, 'key', true);
	$post->invito = get_post_meta($post->ID, 'invito', true);
}

// serve per gestire i permalink
function wpf_pagamento_rewrite_flush()
{
	wpf_pagamento_init();
	flush_rewrite_rules();
}

// aggiunge i boxes necessari a
function wpf_pagamento_add_boxes()
{

	// Use nonce for verification
	wp_nonce_field(plugin_basename(__FILE__), 'wpf_pagamento_noncename');

	// $readonly = (!current_user_can('approve_pagamenti')) && ($post->post_status != 'published');
	$readonly = false;
	
	// The actual fields for data entry
	$form_fields = array(
            'tipo' => array(
					'type' => ($readonly ? 'readonly' : 'select'),
					'values' => 'VISA,MASTERCARD,PAYPAL,BONIFICO',
                	'description' => __("Tipo di pagamento", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui il tipo di pagamento", WPF_DOMAIN )
			),
			'importo' => array(
					'type' => ($readonly ? 'readonly' : 'smalltext'),
                	'description' => __("Importo", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui l\'importo", WPF_DOMAIN )
			),
			'data' => array(
					'type' => ($readonly ? 'readonly' : 'date'),
                	'description' => __("Data di pagamento", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui la data di pagamento", WPF_DOMAIN )
			),
			'modalita' => array(
					'type' => ($readonly ? 'readonly' : 'select'),
					'values' => 'Mod. 1,Mod. 2,Mod. 3',
                	'description' => __("Modalità di pagamento", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui la modalita di pagamento", WPF_DOMAIN )
			),
			'ccbancario' => array(
					'type' => ($readonly ? 'readonly' : 'text'),
                	'description' => __("CC bancario", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui il CC bancario", WPF_DOMAIN )
			),
			'num_transazione' => array(
					'type' => ($readonly ? 'readonly' : 'smalltext'),
                	'description' => __("N. transazione", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui il n. transazione", WPF_DOMAIN )
			),
			'documento' => array(
					'type' => ($readonly ? 'readonly' : 'file'),
                	'description' => __("Attestazione di pagamento", WPF_DOMAIN ), 
                	'howto' => __("Carica qui la scansione dell'attestazione di pagamento (max 5MB)", WPF_DOMAIN )
			)
	);
	
	register_post_box('wpf_pagamento', 'dati_pagamento', 'Dati di pagamento', 'normal', 'core', $form_fields);
        
    register_post_parentbox('wpf_pagamento', 'Fattura',wpf_get_query('fatture_ricevute'),__("Fattura a cui si riferisce la fattura", WPF_DOMAIN ));
}

// cattura e salva i dati del box generale
function wpf_pagamento_generale_save($post_id, $post)
{
	// If it is our form has not been submitted, so we dont want to do anything
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
	{
		return;
	}

	// verify this came from the our screen and with proper authorization,
	// because save_post can be triggered at other times
	/*if (!wp_verify_nonce(@$_POST['wpf_pagamento_noncename'], plugin_basename(__FILE__)))
	{
		return;
	}*/

	if (!current_user_can('edit_pagamenti'))
	{
		return;
	}

        if ($post->post_type != 'wpf_pagamento')
	{
		return;
	}
        
	if ($post->post_status == 'publish')
	{
		return;
	}

	if ($post->post_status == 'closed')
	{
		return;
	}

	// OK, you can save the data
	$my_post = array();
	$my_post['ID'] = $post_id;
	$my_post['post_title'] = $post->nome_pagamento;
	$my_post['post_content'] = $post->note;
	$my_post['post_excerpt'] = $post->descrizione;

	remove_action('save_post', 'wpf_pagamento_generale_save');
	wp_update_post($my_post);
	add_action('save_post', 'wpf_pagamento_generale_save');

	admin_field_save_post_meta($post_id,'numero_pagamento',$post->numero_pagamento);
	admin_field_save_post_meta($post_id,'bando_riferimento',$post->bando_riferimento);
	admin_field_save_post_meta($post_id,'estremi_bando',$post->estremi_bando);
	admin_field_save_post_meta($post_id,'data_scadenza',$post->data_scadenza);
}

wpf_pagamento_hooks();

?>
